package com.mokairui.share_model_memory.sync_model;

import lombok.extern.slf4j.Slf4j;

/**
 * @Description 同步模式之 Blacking （模拟监控线程，只存在一个）
 * @Author Mokairui
 * @Since 2021/10/4
 */
@Slf4j(topic = "c.balking")
public class Balking {

    // 用来表示是否已经有此线程在运行，监控的线程只需要有一个
    private volatile boolean staring;

    public void start() {
        log.info("尝试启动监控线程...");
        synchronized (this) { // 加锁的原因是可能同时调用多次此方法（在多线程中）所以要在读取和 修改临界区变量中要加锁
            if (staring) {
                return;
            }
            staring = true;
        }

        // 逻辑部分...
    }
}
